複数のCloudFrontディストリビューションが紐づいたWAF WebACLで特定URLに対してのみ接続元IPアドレス制限したい
困っていた内容
複数の CloudFront ディストリビューションが紐づいた WAF WebACL でパスを含む特定の URL に対してのみ接続元 IP アドレス制限したいのですが、ルールの設定方法がわかりません。
WAF WebACL には二つの CloudFront ディストリビューションが紐づいています。
どう対応すればいいの?
問題を解決するアプローチは一つではありませんが、ここでは一例を紹介します。
WebACL ルールで以下 3 つのステートメントを作成し、全ての条件に合致する (matches all the statements (AND)) リクエストを制限します。
- 特定の IP アドレスからのリクエスト
- 特定のドメイン名へのリクエスト
- 特定のパス名へのリクエスト
Statement 1
特定の IP アドレスからのリクエストを拒否するために、拒否すべき IP を含む IP セットを設定します。
- Inspect: "Originates from IP address in"
- IP set: 事前に作成した IP セットを指定
Statement 2
特定のドメイン名へのリクエストについて制御を行うため 単一ヘッダーを利用した以下の設定を行います。
- Inspect: "Request Components - Single header"
- Header field name: "host"
- String to match: 特定のドメイン名を指定
Statement 3
特定パス名へのアクセスを制御するため URI パス を指定します。
- Inspect: "Request Components - URI Path"
- String to match: 特定のパスを指定
Action
Action は Block に設定します。